package cn.wen.java.utils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.ConvertUtils;

import cn.wen.java.nio.UtilsOfJSON;

/**
 * Title：转换类
 * <p>
 * Description：
 * <p>
 * Copyright：Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision：1.0 Date：2011/1/6 Description：初完成。
 *          <p>
 *          Revision：1.1 Date：2011/1/10 Description：新增arrayToList方法。
 *          <p>
 */
@SuppressWarnings("unchecked")
public class Converter {

    /**
     * @see org.apache.commons.beanutils.ConvertUtils
     */
    public static <T> T convert(Object obj, Class<T> targetType) throws ClassCastException {
	return (T) ConvertUtils.convert(obj, targetType);
    }

    /**
     * Convert the supplied array into a List. A primitive array gets converted into a List of the appropriate wrapper type.
     * <p>
     * A <code>null</code> source value will be converted to an empty List.
     * 
     * @param source the (potentially primitive) array
     * @return the converted List result
     * @see Arrays#asList
     */
    public static <T> List<T> toList(T[] source) {
	return Arrays.asList(source);
    }

    /**
     * 可将集合转换为数组（支持泛型）。
     * 
     * @param <T> 类型
     * @param set 集合
     * @return
     */
    public static <T> T[] toArray(Iterable<T> set) {
	Object[] os = new Object[HelperOfCollection.size(set)];
	Integer i = 0;
	for (Object o : set)
	    os[i++] = o;
	return (T[]) os;
    }

    /**
     * Title：转换类（集合转换）
     * <p>
     * Description：List相关
     * <p>
     * Copyright：Copyright (c) 2011
     * 
     * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
     * @version Revision：1.0 Date：2011/7/30 Description：初完成。
     *          <p>
     */
    public static class ForList {

	public static String toJson(List<?> ds) {
	    return UtilsOfJSON.toJSONByArray(ds);
	}

    }

    /**
     * Title：转换类（集合转换）
     * <p>
     * Description：Map相关
     * <p>
     * Copyright：Copyright (c) 2011
     * 
     * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
     * @version Revision：1.0 Date：2011/7/30 Description：初完成。
     *          <p>
     */
    public static class ForMap {

	public static String toJson(Map<?, ?> ds) {
	    return UtilsOfJSON.toJSONByArray(ds);
	}

    }

}
